Programming Languages and Compilers

News

Assessment methods and criteria

Lectures

  • Lectures [PDF]
  • LabTP#01 [PDF]
  • LabTP#02 [PDF]
  • Introdução à Análise Sintáctica [PDF]
  • Análise Sintáctica Descendente [PDF]
  • Gramática Atributiva [PDF]
  • Bison & Yacc [PDF]

Labs (60% - 12 Values)

  • Labs are submitted in person during practical classes, without exceptions.
  • Lab #01: Introdução ao Flex. [PDF]
  • Lab #02: Expressões Regulares - Exercícios Práticos. [PDF]
  • Lab #03: Autómatos Finitos. [PDF]
  • Lab #04: Gramáticas. Conjuntos FIRST e FOLLOW. Análise sintáctica descendente LL(1). [PDF]
  • Lab #05: Gramáticas Atributivas. [PDF]
  • Lab #06: Bison & Yacc. [PDF]

Project (40% - 8 Values)

Mandatory requirement: successfully compile/interpret the tests.
Mini compiler/interpreter projects for widely known programming languages (mini-C, mini-pascal, mini-python, mini-java, mini-ocaml, etc.) are not accepted.
  • Deliverables
  • Deadline: 04/01/2023
    • #01:Ast
    • #02:Lexer
    • #03:Parser
    • #04:Compiler/Interpreter
    • #05:Main
    • #06:Makefile
    • #07:Tests
    • #08:Readme
  • Options
    • #01:Mini-Pascal
      • Aux #01: [WEB]
      • Aux #02: [WEB]
      • Aux #03: [WEB]
    • #02:Mini-C
      • Aux #01: [WEB]
      • Aux #02: [WEB]
      • Aux #03: [WEB]
      • Aux #04: [WEB]
      • Aux #04: [WEB]
      • Aux #05: [WEB]
    • #03:Mini-Java
      • Aux #01: [WEB]
      • Aux #02: [WEB]
      • Aux #03: [WEB]
      • Aux #04: [WEB]
    • #03:Mini-Python
      • Aux #01: [WEB]
      • Aux #02: [WEB]

Resources

  • Introduction to Compilers and Language Design - A free online textbook by Douglas Thain [WEB]
  • LEX & YACC TUTORIAL [WEB]
  • Implementando um analisador léxico usando o Flex [WEB]
  • Flex (Fast Lexical Analyzer Generator) [WEB]
  • Introduction to YACC [WEB]
  • How to Build a C Compiler Using Lex and Yacc [WEB]
  • Lex and Yacc Tutorial [WEB]
  • LEX & YACC Tutorial [WEB]